/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package co.edu.udea.ingweb.DAO;

import co.edu.udea.ingweb.model.User;
import java.util.List;
import org.hibernate.Hibernate;
import org.hibernate.HibernateException;
import org.hibernate.Session;

/**
 *
 * @author Felipe
 * @author Oscar Gallon
 */
public class UserDaoImplement implements UserDao {

    /**
     * Este metodo trae todos los usuarios de la base de datos
     *
     * @return lista con los usuarios encontrados
     *
     */
    @Override
    public List<User> getUser() {

        Session session = NewHibernateUtil.getSessionFactory().openSession();
        session.beginTransaction();
        List<User> list = null;

        try {
            list = session.createQuery(" from user").list();
            // sessio
        } catch (Exception e) {
        }
        session.close();

        return list;
    }

    /**
     * Este metodo inserta un usuario en la base de datos
     *
     * @param aUser usuario a insertar
     * @return verdadero de ser exitosa la insercion, falso de lo contrario
     */
    @Override
    public boolean insertUser(User aUser) {
        Session session = NewHibernateUtil.getSessionFactory().openSession();
        session.beginTransaction();
        try {
            session.save(aUser);
            session.beginTransaction().commit();
            session.close();
            return true;
        } catch (HibernateException e) {
            System.out.println(e.getMessage());
            session.close();
            return false;
        }//To change body of generated methods, choose Tools | Templates.
    }

    /**
     * Edita un usuario creado previamente
     *
     * @param aUser usuario a editar
     * @return verdadero de ser exitoso falso de lo contrario
     */
    @Override
    public boolean editUser(User aUser) {
        Session session = NewHibernateUtil.getSessionFactory().openSession();
        session.beginTransaction();
        try {
            session.merge(aUser);
            session.beginTransaction().commit();
            session.close();
            return true;
        } catch (HibernateException e) {
            System.out.println(e.getMessage());
            session.close();
            return false;
        } finally {

        }//To
    }

    /**
     * Borrar un usuario de la base de datos
     *
     * @param aUser usuario a eliminar
     * @return verdadero en caso de ser exitoso, falso de lo contrario
     */
    @Override
    public boolean delete(User aUser) {
        //To change body of generated methods, choose Tools | Templates.
        Session session = NewHibernateUtil.getSessionFactory().openSession();
        session.beginTransaction();
        try {
            session.delete(aUser);
            session.beginTransaction().commit();
            session.close();
            return true;
        } catch (HibernateException e) {
            System.out.println(e.getMessage());
            session.close();
            return false;

        } finally {

        }
    }

}
